iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
自我挑戰組

IT工作中曾遇到的問題系列 第 11

Oracle DB 使用網路服務時出現ORA-24247: 存取控制清單 (ACL) 拒絕網路存取

  • 分享至 

  • xImage
  •  

今天在使用utl_smtp的package發送e-mail時,出現了ORA-24247: 存取控制清單 (ACL) 拒絕網路存取

UTL_MAIL、UTL_SMTP、UTL_HTTP、UTL_TCP 等Package允許DB Server使用外部網路的服務,當這些權限被授予許可時,是所有外部服務的主機都可以連線,這有有不安全的疑慮。

因此在Oracle 11g之後,加強了安全性,引入了存取控制清單(ACL),不僅可以控制誰可以使用這些package,還可以依據IP和Port來控制連線的權限。

步驟如下(需要使用system來操作):

  1. 用 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL 建立存取控制清單(ACL)
  2. 用 DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL 將此 ACL 設定與外部主機相關資訊
  3. 用 DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE 在此 ACL 授予使用者對外部主機存取的權限

依我目前的情形,我需要的是授予允許使用者對郵件主機192.168.1.111連線的ACL

新增一個新的ACL,記得把SCOTT換成需要使用服務的DB帳號,新的ACL取名為mail_services.xml:

DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
  acl => 'mail_services.xml',
  description => 'MAIL ACL',
  principal => 'SCOTT',
  is_grant => true,
  privilege => 'connect');

在ACL中新增一個權限,這個也可以獨立使用在已存在的ACL(mail_services.xml):

DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
    acl => 'mail_services.xml',
    principal => 'SCOTT',
    is_grant => true,
    privilege => 'resolve');

將ACL與提供網路服務的IP連接,host的參數可以用「*」設定為不限:

DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
    acl => 'mail_services.xml',
    host => '192.168.1.111');

重新再試一次mail的寄送,這次就成功了。


上一篇
忙裡偷閒,用powershell自動撰寫檢查記錄表
下一篇
利用python來將SQLite的資料轉成Word
系列文
IT工作中曾遇到的問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言